1 A new land has emerged

DRAFT

1.1 First view

An island previously unknown to humankind has just been discovered and you are part of a team of scientists commissioned to inventory its forest resources, mainly its carbon stock.

Before we start, how would you name the newly found land?

You have chosen: Louland.

In a future version of this interactive training module, you will be able to choose different land profiles with different (1) forest categories, (2) ratio of ocean covering the 90 km square frame in which the new land is created, (3) inclusion or not of mangrove forests and even (4) the maximum altitude of Louland (it will have an impact on unaccessible plots)!

For now, Louland forests are divided into 4 categories plus Mangrove Forests and all the island is considered accessible.

Great! Here is Louland looks like.

The remote sensing team has developed land cover and topographic maps based on 30 m resolution remote sensing images and a first exploration crew measured a few forest plots. Based on their observations, we will be able to have a quick overview of Louland. This data is call auxiliary data, it is not NFI data per se, but useful information to help designing and implementating an NFI.

1.2 Preliminary information

1.2.1 Results of a small scale forest inventory

First, let’s have a look at the results of 10 forest plots measured by the exploration crew. The data is stored in the object fi_agb, by running the object name in the console we will see the results:

fi_agb
# A tibble: 1 x 8
  n_plot n_tree mean_ba sd_ba mean_agb sd_agb    ci ci_perc
   <int>  <dbl>   <dbl> <dbl>    <dbl>  <dbl> <dbl>   <dbl>
1     10    658    34.6  20.6     295.   184.  114.      39

ADD variable description

 

the 10 plots come from a random sample in one of the Evergreen Forest of Louland. The crew also share the plot level aboveground biomass in the table fi_pagb. Run the table fi_pagb in the console below to see the table basic information:

## Empty console
fi_pagb
# A tibble: 10 x 4
   plot_id count_tree plot_ba plot_agb
   <chr>        <dbl>   <dbl>    <dbl>
 1 ev-be1o        790   20.7     166. 
 2 ev-fh4s       1179   51.9     493. 
 3 ev-leu9        469   71.1     546. 
 4 ev-nv7h       1075   46.6     421. 
 5 ev-ppw7       1631   45.0     292. 
 6 ev-qc3d         24    2.05     13.0
 7 ev-rm6y        463   19.0      98.5
 8 ev-sl7s        280   43.1     482. 
 9 ev-tdk3        248   29.7     277. 
10 ev-unx8        421   16.4     168. 

 

Given that the crew chose the plot location randomly, we can use simple aggregating functions to re-calculate the forest mean aboveground biomass and confirm their calculation. We will use a mix of base R tidyverse functions, in particular summarise(). This functions is very handy to aggregate numerical variables in different columns of our plot table and can even be used in combination to group_by() to summarize based on category variables (more on that later, with the full NNFI data).

Let’s see for example how to calculate the mean basal area of the forest and its standard deviation, and save the results in a table exfi_ba. After you create the table, run the table name in the console to display its content.

exfi_ba <- fi_pagb %>%
  summarise(
    mean_ba = mean(plot_ba),
    sd_ba   = sd(plot_ba)
  )

exfi_ba
# A tibble: 1 x 2
  mean_ba sd_ba
    <dbl> <dbl>
1    34.6  20.6

 

Now it’s your turn, create a table exfi_agb with the columns mean_agb and sd_agb and display the results.

## Guided
exfi_agb <- fi_pagb %>%
  summarise(
    mean_agb = mean(plot_agb),
    sd_agb   = sd(plot_agb)
  )

exfi_agb
# A tibble: 1 x 2
  mean_agb sd_agb
     <dbl>  <dbl>
1     295.   184.

1.2.2 land cover and areas

Second, we can use the land cover shapefile provided to us to view the different land covers and calculate the area of the forest. The shapefile is loaded in the environment with the name sf_newland with the package sf. It contains both the attribute table, the geometries and the coordinate reference system. Running the object name in the console displays summary information:

sf_newland
Simple feature collection with 515 features and 6 fields
Geometry type: GEOMETRY
Dimension:     XY
Bounding box:  xmin: 560363 ymin: 9919901 xmax: 650363 ymax: 10009900
Projected CRS: WGS 84 / UTM zone 27S
First 10 features:
   lc id id_lc    w     hex                       geometry lc_f
1  NF  1     1 0.37 #edf5e1 POLYGON ((612499.4 10009875...   NF
2  EV  2     5 0.11 #00743f POLYGON ((568874 10009825, ...   EV
3  PL  3     2 0.21 #8ee4af POLYGON ((570667.8 10009837...   PL
4  PL  4     2 0.21 #8ee4af POLYGON ((572182.9 10009838...   PL
5  NF  6     1 0.37 #edf5e1 POLYGON ((619163.7 10009798...   NF
6  DD  7     3 0.08 #5cdb95 POLYGON ((570477.1 10009862...   DD
7  NF  8     1 0.37 #edf5e1 POLYGON ((562017 10009822, ...   NF
8  EV  9     5 0.11 #00743f POLYGON ((616639.4 10009767...   EV
9  EV 10     5 0.11 #00743f POLYGON ((567944.9 10009325...   EV
10 EV 11     5 0.11 #00743f POLYGON ((618336.6 10007781...   EV

sf objects behave similarly with standard data frames, making it easy to apply tidyverse functions to them or to convert them to simple data data frames with as_tibble(). The sf package also contains the st_area() function that we are going to use to calculate the overall area of the land covers.

area_lc <- sf_newland %>%
  mutate(area_ha = st_area(.) %>% units::set_units(value = ha)) %>%
  as_tibble() %>% 
  group_by(lc_f) %>%
  summarise(area_ha = sum(area_ha))

area_lc
# A tibble: 7 x 2
  lc_f  area_ha
  <fct>    [ha]
1 WA      3849.
2 NF    158229.
3 PL    153001.
4 DD     64084.
5 MD    186330.
6 EV     88991.
7 MG     10990.

ADD dynamic/static map with land cover and first FI plot AGB